package conson.tech.manage.coupons.entity.vo;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * ClassName: CouponsDetailVo
 * Description: 优惠券详细信息
 * Author: ZYF
 * Date: 2020/7/22
 * Version: 1.0
 */
@ApiModel(value = "conson.tech.manage.coupons.entity.vo.CouponsDetail", description = "管理端查询单条优惠券详细信息")
@Data
public class CouponsDetailVo implements Serializable {

    /**
     * 申请人
     */
    private String applyName;

    /**
     * 优惠券主体（0平台、1商家）
     */
    private Integer provider;

    /**
     * 费用归属
     */
    private List<CouponsCostDetailVo> couponsCostDetailVo;

    /**
     * 发券方式 0定向发放 1非定向发放
     */
    private Integer providedType;

    /**
     * 优惠券批次名称
     */
    private String batchName;

    /**
     * 优惠券使用类型 0 现金券 1满减券
     */
    private Integer batchType;

    /**
     * 优惠券金额
     */
    private BigDecimal batchMoney;

    /**
     * 优惠券限额
     */
    private BigDecimal limitMoney;

    /**
     * 使用场景限制 是否支持线上使用（0 否 1是）
     */
    private Integer onlineFlag;

    /**
     * 使用场景限制 是否支持线下使用（0 否 1是）
     */
    private Integer offlineFlag;


    /**
     * 前端展示标题
     */
    private String showTitle;

    /**
     * 使用限制说明
     */
    private String usedDes;

    /**
     * 有效期限制类型(0 绝对日期 1相对日期)
     */
    private Integer timeLimit;

    /**
     * 有效期开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 有效期结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 相对有效期
     */
    private Integer relativeTime;

    /**
     * 申请数量
     */
    private Integer applicateNum;

    /**
     * 每人最大可领取数量
     */
    private Integer limitNum;

    /**
     * 预警数量
     */
    private Integer warningNum;

    /**
     * 是否到期预警 （0 否 1是）
     */
    private Integer expirationNotice;

    /**
     * 到期预警发短信flag(0 不发短信 1发短信)
     */
    private Integer smsFlag;

    /**
     * 到期提醒是否发送appPush（0 不发生 1发送）
     */
    private Integer pushFlag;

    /**
     * 推送内容
     */
    private String smsDes;

    /**
     * 使用范围类型 0-全平台，1-场景 2-商-商品品类 4-商品spuId
     */
    private Integer rangeType;
    /**
     * 优惠券关联项目id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long usingId;

    /**
     * 优惠券id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long couponId;
}
